package org.hales.config.mabatisConfig;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

/**
 * @author 陈建康
 */
/*@Configuration
@MapperScan(basePackages = {"org.hales.dao.mpsql"},
        sqlSessionFactoryRef = "sqlSessionFactoryMyPostgreSQLDB")*/
public class MyBatisMyPostgreSQLConfig {
//    @Autowired
//    @Qualifier("MyPostgreSQLDB")
//    private DataSource dataSource;
//
//
//    /**
//     * <p>创建并配置一个连接到德阳数据库的SqlSessionFactory</p>
//     * <p>该方法首先创建一个SqlSessionFactoryBean实例，设置其数据源为德阳数据库，
//     * 并指定映射文件路径，然后配置其对象的属性，最后返回配置好的SqlSessionFactory对象</p>
//     *
//     * @return SqlSessionFactory 连接到德阳数据库的SqlSessionFactory实例
//     * @throws Exception 如果配置过程中发生错误，则抛出异常
//     */
//    @Bean
//    @Primary
//    public SqlSessionFactory sqlSessionFactoryMyPostgreSQLDB() throws Exception {
//        // 创建SqlSessionFactoryBean实例
//        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
//        // 设置数据源为德阳数据库
//        factoryBean.setDataSource(dataSource);
//        // 加载映射文件，使用通配符匹配mapper XML文件
//        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(
//                "classpath:org/hales/dao/mapper/**/*.xml"));
//        // 配置SqlSessionFactory对象，开启下划线到驼峰命名的自动转换
//        factoryBean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
//        // 返回配置好的SqlSessionFactory对象
//        return factoryBean.getObject();
//    }
//
//    /**
//     * <p>创建并配置一个SqlSessionTemplate实例，该实例与德阳数据库相关联</p>
//     * 使用@Bean注解确保该方法返回的SqlSessionTemplate实例将被Spring容器管理，
//     * 并可作为Bean注入到其他组件中
//     *
//     * @return SqlSessionTemplate实例，用于执行SQL操作
//     * @throws Exception 如果sqlSessionFactoryDeYangDB()方法抛出异常，则此方法也会抛出异常
//     */
//    @Bean
//    public SqlSessionTemplate sqlSessionMyPostgreSQLTemplate() throws Exception {
//        // 创建SqlSessionTemplate实例，传入德阳数据库的SqlSessionFactory
//        SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactoryMyPostgreSQLDB());
//        // 返回配置好的SqlSessionTemplate实例
//        return template;
//    }

}

